#Move command

#!/bin/bash

#funcion de logueo
function log {
	logFile=$1
	type=$2
	message=$3 
	if [ "$logFile" != "" ]
	then
	./Glog.sh "$logFile" "$type" "$message"
	fi
}


#valida la cantidad de argumentos

duplicateFolderName="dup"

if [ $# -lt 2 ]
then
	echo "too few arguments"
	exit 1
fi

if [ $# -gt 3 ]
then
	echo "too many arguments"
	exit 1
fi

inputPath=$1
outputPath=$2
logFile=""

if [ $# -eq 3 ]
then
	logFile=$3
fi

#valida que la ruta de origen sea distinta de la ruta de destino
if [ "$inputPath" == "$outputPath" ]
then

	log "$logFile" "SE" "mover: los archivos de origen y destino son el mismo archivo"

	exit 1
fi

movePath="$outputPath"

duplicatePath="$outputPath$duplicateFolderName"

#valida la existencia de las rutas de destino y origen
if [ ! -e "$inputPath" ]
then
	log "$logFile" "E" "el archivo de origen $inputPath no existe"
	exit 1
fi

inputFilename=`echo "$inputPath" | sed 's/^.*\/\(.*\)$/\1/'`
fullMovePath="$movePath$inputFilename"

if [ ! -d "$movePath" ]
then
	log "$logFile" "E" "el archivo de destino $movePath no existe"
	exit 1
fi

#si ya existe el archivo a mover en la ruta de destino lo mueve a la subcarpeta dup
if [ -e "$fullMovePath" ]
then
	#si no existe la carpeta dup la crea
	if [ ! -d "$duplicatePath" ]
	then
	
		mkdir "$duplicatePath" 
	fi
	
	#obtiene el numero del ultimo archivo del mismo nombre que el que se esta tratando de mover a la carpeta dup
	lastDuplicate=$(ls -1 "$duplicatePath" | grep -w "$inputFilename\.[0-9]*" | sed 's/.*\/\(.*\)/\1/' | cut -d "." -f 2 | sort | tail --lines=1)
	
	let duplicateNumber=$lastDuplicate+1
	
	duplicateFile="$inputFilename.$duplicateNumber"
	#cambia la ruta de destino para que apunte a la carpeta dup
	movePath="$outputPath$duplicateFolderName/$duplicateFile"
fi


#mueve el archivo
mv -f "$inputPath" "$movePath"

#loguea si le entregaron un archivo de logueo
if [ $? -eq 0 ]
then
	log "$logFile" "I" "mover exitoso origen: $inputPath destino: $outputPath"
else
	log "$logFile" "E" "mover fallo origen: $inputPath destino: $outputPath"
fi
#program ended successfuly
exit 0
